#include<bits/stdc++.h>
#include"utils.cpp" 
using namespace std;

struct Input {
	/* 一般小数据个数选 "MIN_N~MID_N"，大数据个数选"(p.MAX_N-p.MID_N)~ p.MAX_N" */
	int MIN_N;// 序列个数最小值 
	int MID_N;// 序列个数中等值
	int MAX_N;// 序列个数最大值
	/* 一般小数值选 "MIN_V~MID_V"，大数值选 "p.MID_V ~ p.MAX_V" 或 "(p.MAX_V-p.MID_V)~ p.MAX_V" */
	int MIN_V;// 序列元素最小数值
	int MID_V;// 序列元素中等值
	int MAX_V;// 序列元素最大数值

};
// ( 5 ≤ n ≤ 5000 , 3 ≤ m ≤ n ）
//  k ( 1000 ≤ k ≤ 9999 ）和该选手的笔试成绩 s ( 1 ≤ s ≤ 100 )

// 根据文件序号定制输入数据生成规则
// fileIndex 文件序号 0~9
int ip(int fileIndex) {

	// 分别对应上面6个字段
	const Input p = {
		1, 100, 1000,// 人数n
		1, 1000, 2100000000,// 数值v
	};

	string a[] = {"1 10000", "5 1000000000 1 1000000000 1000000000 1000000000", "3 3 100 10 10", "0 8", "0 9", "", "", "", ""};
	
	long long m, n, b, d;
	int t1, t2, t3, mMax;
	string s;

	switch (fileIndex){
		/* 标准测试 - 随机的小个数n、小数值v */
		case 0:
		case 1:
		case 2:
		case 3:
		case 4:
		case 5:
		case 6:
			n = R(p.MIN_N, p.MID_N);// RA(n, p.MIN_V, p.MID_V);
			cout << n << endl;
			RA(n, p.MIN_V, p.MID_V);
			break;
		/* 标准测试 - 随机的大个数n、大数值v */
		case 7:
		case 8:
			n = R(p.MID_N, p.MAX_N);// RA(n, p.MID_V, p.MAX_V);
			cout << n << endl;
			RA(n, p.MID_V, p.MAX_V);
			break;
		/* 边界测试 - 固定的个数最大值n，随机的大数值v */
		case 9:
			n = p.MAX_N;// RA(n, p.MID_V, p.MAX_V);
			cout << n << endl;
			s = "1";
			for(int i=0; i<200; i++) {
				s += "0";
			}
			for(int i=0; i<n; i++) {
				cout << s << " " << endl;
			}
			break;

		/* 边界和特例测试 - 固定的数据个数n的最小值、数值v的最小最大值 和 特例踩坑数据 */
		// case 0:
		// case 1:
		// 	n = 5;
		// 	cout << n << endl;
		// 	for(int i=0; i<n; i++) {
		// 		RA(3, p.MIN_V, p.MID_V);
		// 		cout << endl;
		// 	}
		// 	break;
		default:
			cout << a[fileIndex];// 直接写到字符串数组里面，题目要求的换行可以用空格代替
			break;
	}

	
	// cout << a << " " << b << " " << c << " " << d << " ";

	return 0;
}

// 
void S1(int fileIndex) {

	long long m, n, b, d;
	switch (fileIndex){
		case 1:
			m = 16;
			n = 16;
			break;
		case 2:
			m = 1;
			n = 1;
			break;
		case 3:
			m = 1;
			n = 16;
			break;
		case 4:
			m = 24;
			n = 16;
			break;
		case 5:
			m = 54;
			n = 54-17;
			break;
		case 6:
			m = 54-17*2;
			n = 54;
			break;
		case 7:
			m = 100;
			n = 90;
			break;
		case 8:
			m = 100;
			n = 60;
			break;
		case 9:
			m = 100;
			n = 26;
			break;
		default:// 10
			// m / n = a ······ b
			m = 19;
			n = 20;
			break;
	}

}

